<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script>
	// * 函数的返回值为promise对象
	// * promise对象的结果由`async`函数执行的返回值决定
	{
		async function fn(){

        }
		const fn1 = async function(){

        }
		const fn2 = async ()=>{

        }
		setTimeout(async function(){

        })
        setTimeout(async ()=>{

        })
        const obj = {
			async fn1(){

            },
            fn2:async function(){

            },
            fn3:async ()=>{

            },
            fn
        }

    }
	{
		// 1- async 函数返回的永远都是 Promise 实例
        // 2- 实例的状态和值受 async 函数返回值的影响
        //    async 函数如果返回的是一个非 Promise 实例，得到的Promise实例的状态为成功，值为返回值
        //    async 函数如果返回的是一个 Promise 实例，得到的Promise实例的结果与返回的相同
        //    如果async函数体内有异常，那么得到的状态为失败，值为异常信息
		async function fn(){
			// return 1;
            // return new Promise((resolve, reject) => {
			// 	reject(100);
            // })
            throw "异常";
        }

		console.log(fn());
    }
</script>
</html>